package de.nordakademie.hausarbeit.crudframework.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.nordakademie.hausarbeit.crudframework.services.DomainDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDomainDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'application'", "'{'", "'}'", "'package'", "'datatype'", "'entity'", "'extends'", "'att'", "':'", "'String'", "'Integer'", "'Boolean'", "'Long'", "'refs'", "'one'", "'many'", "'ref_by'", "'.'"
    };
    public static final int RULE_ID=4;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalDomainDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalDomainDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalDomainDslParser.tokenNames; }
    public String getGrammarFileName() { return "../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g"; }



     	private DomainDslGrammarAccess grammarAccess;
     	
        public InternalDomainDslParser(TokenStream input, DomainDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Application";	
       	}
       	
       	@Override
       	protected DomainDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleApplication"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:67:1: entryRuleApplication returns [EObject current=null] : iv_ruleApplication= ruleApplication EOF ;
    public final EObject entryRuleApplication() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleApplication = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:68:2: (iv_ruleApplication= ruleApplication EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:69:2: iv_ruleApplication= ruleApplication EOF
            {
             newCompositeNode(grammarAccess.getApplicationRule()); 
            pushFollow(FOLLOW_ruleApplication_in_entryRuleApplication75);
            iv_ruleApplication=ruleApplication();

            state._fsp--;

             current =iv_ruleApplication; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleApplication85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleApplication"


    // $ANTLR start "ruleApplication"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:76:1: ruleApplication returns [EObject current=null] : (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_packageDeclarations_3_0= rulePackageDeclaration ) )* otherlv_4= '}' ) ;
    public final EObject ruleApplication() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_packageDeclarations_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:79:28: ( (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_packageDeclarations_3_0= rulePackageDeclaration ) )* otherlv_4= '}' ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:80:1: (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_packageDeclarations_3_0= rulePackageDeclaration ) )* otherlv_4= '}' )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:80:1: (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_packageDeclarations_3_0= rulePackageDeclaration ) )* otherlv_4= '}' )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:80:3: otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_packageDeclarations_3_0= rulePackageDeclaration ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleApplication122); 

                	newLeafNode(otherlv_0, grammarAccess.getApplicationAccess().getApplicationKeyword_0());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:84:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:85:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:85:1: (lv_name_1_0= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:86:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleApplication139); 

            			newLeafNode(lv_name_1_0, grammarAccess.getApplicationAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getApplicationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleApplication156); 

                	newLeafNode(otherlv_2, grammarAccess.getApplicationAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:106:1: ( (lv_packageDeclarations_3_0= rulePackageDeclaration ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==14) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:107:1: (lv_packageDeclarations_3_0= rulePackageDeclaration )
            	    {
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:107:1: (lv_packageDeclarations_3_0= rulePackageDeclaration )
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:108:3: lv_packageDeclarations_3_0= rulePackageDeclaration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getApplicationAccess().getPackageDeclarationsPackageDeclarationParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulePackageDeclaration_in_ruleApplication177);
            	    lv_packageDeclarations_3_0=rulePackageDeclaration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getApplicationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"packageDeclarations",
            	            		lv_packageDeclarations_3_0, 
            	            		"PackageDeclaration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleApplication190); 

                	newLeafNode(otherlv_4, grammarAccess.getApplicationAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleApplication"


    // $ANTLR start "entryRulePackageDeclaration"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:136:1: entryRulePackageDeclaration returns [EObject current=null] : iv_rulePackageDeclaration= rulePackageDeclaration EOF ;
    public final EObject entryRulePackageDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageDeclaration = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:137:2: (iv_rulePackageDeclaration= rulePackageDeclaration EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:138:2: iv_rulePackageDeclaration= rulePackageDeclaration EOF
            {
             newCompositeNode(grammarAccess.getPackageDeclarationRule()); 
            pushFollow(FOLLOW_rulePackageDeclaration_in_entryRulePackageDeclaration226);
            iv_rulePackageDeclaration=rulePackageDeclaration();

            state._fsp--;

             current =iv_rulePackageDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackageDeclaration236); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageDeclaration"


    // $ANTLR start "rulePackageDeclaration"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:145:1: rulePackageDeclaration returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_entities_3_0= ruleEntity ) )* otherlv_4= '}' ) ;
    public final EObject rulePackageDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_entities_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:148:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_entities_3_0= ruleEntity ) )* otherlv_4= '}' ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:149:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_entities_3_0= ruleEntity ) )* otherlv_4= '}' )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:149:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_entities_3_0= ruleEntity ) )* otherlv_4= '}' )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:149:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_entities_3_0= ruleEntity ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,14,FOLLOW_14_in_rulePackageDeclaration273); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageDeclarationAccess().getPackageKeyword_0());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:153:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:154:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:154:1: (lv_name_1_0= ruleQualifiedName )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:155:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getPackageDeclarationAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackageDeclaration294);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageDeclarationRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_rulePackageDeclaration306); 

                	newLeafNode(otherlv_2, grammarAccess.getPackageDeclarationAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:175:1: ( (lv_entities_3_0= ruleEntity ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==16) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:176:1: (lv_entities_3_0= ruleEntity )
            	    {
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:176:1: (lv_entities_3_0= ruleEntity )
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:177:3: lv_entities_3_0= ruleEntity
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPackageDeclarationAccess().getEntitiesEntityParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEntity_in_rulePackageDeclaration327);
            	    lv_entities_3_0=ruleEntity();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPackageDeclarationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"entities",
            	            		lv_entities_3_0, 
            	            		"Entity");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_rulePackageDeclaration340); 

                	newLeafNode(otherlv_4, grammarAccess.getPackageDeclarationAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageDeclaration"


    // $ANTLR start "entryRuleDataType"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:207:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
    public final EObject entryRuleDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataType = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:208:2: (iv_ruleDataType= ruleDataType EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:209:2: iv_ruleDataType= ruleDataType EOF
            {
             newCompositeNode(grammarAccess.getDataTypeRule()); 
            pushFollow(FOLLOW_ruleDataType_in_entryRuleDataType378);
            iv_ruleDataType=ruleDataType();

            state._fsp--;

             current =iv_ruleDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDataType388); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataType"


    // $ANTLR start "ruleDataType"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:216:1: ruleDataType returns [EObject current=null] : (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) ) ;
    public final EObject ruleDataType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;

         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:219:28: ( (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:220:1: (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:220:1: (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:220:3: otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_ruleDataType425); 

                	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:224:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:225:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:225:1: (lv_name_1_0= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:226:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDataType442); 

            			newLeafNode(lv_name_1_0, grammarAccess.getDataTypeAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDataTypeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataType"


    // $ANTLR start "entryRuleEntity"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:250:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:251:2: (iv_ruleEntity= ruleEntity EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:252:2: iv_ruleEntity= ruleEntity EOF
            {
             newCompositeNode(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity483);
            iv_ruleEntity=ruleEntity();

            state._fsp--;

             current =iv_ruleEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity493); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:259:1: ruleEntity returns [EObject current=null] : (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_attributes_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:262:28: ( (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:263:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:263:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:263:3: otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleEntity530); 

                	newLeafNode(otherlv_0, grammarAccess.getEntityAccess().getEntityKeyword_0());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:267:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:268:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:268:1: (lv_name_1_0= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:269:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity547); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEntityRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:285:2: (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==17) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:285:4: otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleEntity565); 

                        	newLeafNode(otherlv_2, grammarAccess.getEntityAccess().getExtendsKeyword_2_0());
                        
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:289:1: ( (otherlv_3= RULE_ID ) )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:290:1: (otherlv_3= RULE_ID )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:290:1: (otherlv_3= RULE_ID )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:291:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getEntityRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity585); 

                    		newLeafNode(otherlv_3, grammarAccess.getEntityAccess().getSuperTypeEntityCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleEntity599); 

                	newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:306:1: ( (lv_attributes_5_0= ruleAttribute ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==RULE_ID||LA4_0==18) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:307:1: (lv_attributes_5_0= ruleAttribute )
            	    {
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:307:1: (lv_attributes_5_0= ruleAttribute )
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:308:3: lv_attributes_5_0= ruleAttribute
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAttribute_in_ruleEntity620);
            	    lv_attributes_5_0=ruleAttribute();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEntityRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributes",
            	            		lv_attributes_5_0, 
            	            		"Attribute");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            otherlv_6=(Token)match(input,13,FOLLOW_13_in_ruleEntity633); 

                	newLeafNode(otherlv_6, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:336:1: entryRuleAttribute returns [EObject current=null] : iv_ruleAttribute= ruleAttribute EOF ;
    public final EObject entryRuleAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAttribute = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:337:2: (iv_ruleAttribute= ruleAttribute EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:338:2: iv_ruleAttribute= ruleAttribute EOF
            {
             newCompositeNode(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute669);
            iv_ruleAttribute=ruleAttribute();

            state._fsp--;

             current =iv_ruleAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute679); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:345:1: ruleAttribute returns [EObject current=null] : (this_SimpleAttribute_0= ruleSimpleAttribute | this_RefAttribute_1= ruleRefAttribute | this_RefByAttribute_2= ruleRefByAttribute ) ;
    public final EObject ruleAttribute() throws RecognitionException {
        EObject current = null;

        EObject this_SimpleAttribute_0 = null;

        EObject this_RefAttribute_1 = null;

        EObject this_RefByAttribute_2 = null;


         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:348:28: ( (this_SimpleAttribute_0= ruleSimpleAttribute | this_RefAttribute_1= ruleRefAttribute | this_RefByAttribute_2= ruleRefByAttribute ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:349:1: (this_SimpleAttribute_0= ruleSimpleAttribute | this_RefAttribute_1= ruleRefAttribute | this_RefByAttribute_2= ruleRefByAttribute )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:349:1: (this_SimpleAttribute_0= ruleSimpleAttribute | this_RefAttribute_1= ruleRefAttribute | this_RefByAttribute_2= ruleRefByAttribute )
            int alt5=3;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==18) ) {
                alt5=1;
            }
            else if ( (LA5_0==RULE_ID) ) {
                int LA5_2 = input.LA(2);

                if ( (LA5_2==24) ) {
                    alt5=2;
                }
                else if ( (LA5_2==27) ) {
                    alt5=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 5, 2, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }
            switch (alt5) {
                case 1 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:350:5: this_SimpleAttribute_0= ruleSimpleAttribute
                    {
                     
                            newCompositeNode(grammarAccess.getAttributeAccess().getSimpleAttributeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSimpleAttribute_in_ruleAttribute726);
                    this_SimpleAttribute_0=ruleSimpleAttribute();

                    state._fsp--;

                     
                            current = this_SimpleAttribute_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:360:5: this_RefAttribute_1= ruleRefAttribute
                    {
                     
                            newCompositeNode(grammarAccess.getAttributeAccess().getRefAttributeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleRefAttribute_in_ruleAttribute753);
                    this_RefAttribute_1=ruleRefAttribute();

                    state._fsp--;

                     
                            current = this_RefAttribute_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:370:5: this_RefByAttribute_2= ruleRefByAttribute
                    {
                     
                            newCompositeNode(grammarAccess.getAttributeAccess().getRefByAttributeParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleRefByAttribute_in_ruleAttribute780);
                    this_RefByAttribute_2=ruleRefByAttribute();

                    state._fsp--;

                     
                            current = this_RefByAttribute_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAttribute"


    // $ANTLR start "entryRuleSimpleAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:386:1: entryRuleSimpleAttribute returns [EObject current=null] : iv_ruleSimpleAttribute= ruleSimpleAttribute EOF ;
    public final EObject entryRuleSimpleAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleAttribute = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:387:2: (iv_ruleSimpleAttribute= ruleSimpleAttribute EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:388:2: iv_ruleSimpleAttribute= ruleSimpleAttribute EOF
            {
             newCompositeNode(grammarAccess.getSimpleAttributeRule()); 
            pushFollow(FOLLOW_ruleSimpleAttribute_in_entryRuleSimpleAttribute815);
            iv_ruleSimpleAttribute=ruleSimpleAttribute();

            state._fsp--;

             current =iv_ruleSimpleAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleAttribute825); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleAttribute"


    // $ANTLR start "ruleSimpleAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:395:1: ruleSimpleAttribute returns [EObject current=null] : (otherlv_0= 'att' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) ) ) ) ;
    public final EObject ruleSimpleAttribute() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_type_3_1=null;
        Token lv_type_3_2=null;
        Token lv_type_3_3=null;
        Token lv_type_3_4=null;

         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:398:28: ( (otherlv_0= 'att' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) ) ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:399:1: (otherlv_0= 'att' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) ) ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:399:1: (otherlv_0= 'att' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:399:3: otherlv_0= 'att' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) ) )
            {
            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleSimpleAttribute862); 

                	newLeafNode(otherlv_0, grammarAccess.getSimpleAttributeAccess().getAttKeyword_0());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:403:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:404:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:404:1: (lv_name_1_0= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:405:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSimpleAttribute879); 

            			newLeafNode(lv_name_1_0, grammarAccess.getSimpleAttributeAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSimpleAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleSimpleAttribute896); 

                	newLeafNode(otherlv_2, grammarAccess.getSimpleAttributeAccess().getColonKeyword_2());
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:425:1: ( ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:426:1: ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:426:1: ( (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:427:1: (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:427:1: (lv_type_3_1= 'String' | lv_type_3_2= 'Integer' | lv_type_3_3= 'Boolean' | lv_type_3_4= 'Long' )
            int alt6=4;
            switch ( input.LA(1) ) {
            case 20:
                {
                alt6=1;
                }
                break;
            case 21:
                {
                alt6=2;
                }
                break;
            case 22:
                {
                alt6=3;
                }
                break;
            case 23:
                {
                alt6=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:428:3: lv_type_3_1= 'String'
                    {
                    lv_type_3_1=(Token)match(input,20,FOLLOW_20_in_ruleSimpleAttribute916); 

                            newLeafNode(lv_type_3_1, grammarAccess.getSimpleAttributeAccess().getTypeStringKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSimpleAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_3_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:440:8: lv_type_3_2= 'Integer'
                    {
                    lv_type_3_2=(Token)match(input,21,FOLLOW_21_in_ruleSimpleAttribute945); 

                            newLeafNode(lv_type_3_2, grammarAccess.getSimpleAttributeAccess().getTypeIntegerKeyword_3_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSimpleAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_3_2, null);
                    	    

                    }
                    break;
                case 3 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:452:8: lv_type_3_3= 'Boolean'
                    {
                    lv_type_3_3=(Token)match(input,22,FOLLOW_22_in_ruleSimpleAttribute974); 

                            newLeafNode(lv_type_3_3, grammarAccess.getSimpleAttributeAccess().getTypeBooleanKeyword_3_0_2());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSimpleAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_3_3, null);
                    	    

                    }
                    break;
                case 4 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:464:8: lv_type_3_4= 'Long'
                    {
                    lv_type_3_4=(Token)match(input,23,FOLLOW_23_in_ruleSimpleAttribute1003); 

                            newLeafNode(lv_type_3_4, grammarAccess.getSimpleAttributeAccess().getTypeLongKeyword_3_0_3());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSimpleAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_3_4, null);
                    	    

                    }
                    break;

            }


            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleAttribute"


    // $ANTLR start "entryRuleRefAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:487:1: entryRuleRefAttribute returns [EObject current=null] : iv_ruleRefAttribute= ruleRefAttribute EOF ;
    public final EObject entryRuleRefAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRefAttribute = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:488:2: (iv_ruleRefAttribute= ruleRefAttribute EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:489:2: iv_ruleRefAttribute= ruleRefAttribute EOF
            {
             newCompositeNode(grammarAccess.getRefAttributeRule()); 
            pushFollow(FOLLOW_ruleRefAttribute_in_entryRuleRefAttribute1055);
            iv_ruleRefAttribute=ruleRefAttribute();

            state._fsp--;

             current =iv_ruleRefAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRefAttribute1065); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRefAttribute"


    // $ANTLR start "ruleRefAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:496:1: ruleRefAttribute returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_refs_1_0= 'refs' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) ) ( (otherlv_4= RULE_ID ) ) ) ;
    public final EObject ruleRefAttribute() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token lv_refs_1_0=null;
        Token lv_one_2_0=null;
        Token lv_many_3_0=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:499:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_refs_1_0= 'refs' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) ) ( (otherlv_4= RULE_ID ) ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:500:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_refs_1_0= 'refs' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) ) ( (otherlv_4= RULE_ID ) ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:500:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_refs_1_0= 'refs' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) ) ( (otherlv_4= RULE_ID ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:500:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_refs_1_0= 'refs' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) ) ( (otherlv_4= RULE_ID ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:500:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:501:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:501:1: (lv_name_0_0= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:502:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRefAttribute1107); 

            			newLeafNode(lv_name_0_0, grammarAccess.getRefAttributeAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRefAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:518:2: ( (lv_refs_1_0= 'refs' ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:519:1: (lv_refs_1_0= 'refs' )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:519:1: (lv_refs_1_0= 'refs' )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:520:3: lv_refs_1_0= 'refs'
            {
            lv_refs_1_0=(Token)match(input,24,FOLLOW_24_in_ruleRefAttribute1130); 

                    newLeafNode(lv_refs_1_0, grammarAccess.getRefAttributeAccess().getRefsRefsKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRefAttributeRule());
            	        }
                   		setWithLastConsumed(current, "refs", true, "refs");
            	    

            }


            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:533:2: ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==25) ) {
                alt7=1;
            }
            else if ( (LA7_0==26) ) {
                alt7=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }
            switch (alt7) {
                case 1 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:533:3: ( (lv_one_2_0= 'one' ) )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:533:3: ( (lv_one_2_0= 'one' ) )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:534:1: (lv_one_2_0= 'one' )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:534:1: (lv_one_2_0= 'one' )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:535:3: lv_one_2_0= 'one'
                    {
                    lv_one_2_0=(Token)match(input,25,FOLLOW_25_in_ruleRefAttribute1162); 

                            newLeafNode(lv_one_2_0, grammarAccess.getRefAttributeAccess().getOneOneKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRefAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "one", true, "one");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:549:6: ( (lv_many_3_0= 'many' ) )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:549:6: ( (lv_many_3_0= 'many' ) )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:550:1: (lv_many_3_0= 'many' )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:550:1: (lv_many_3_0= 'many' )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:551:3: lv_many_3_0= 'many'
                    {
                    lv_many_3_0=(Token)match(input,26,FOLLOW_26_in_ruleRefAttribute1199); 

                            newLeafNode(lv_many_3_0, grammarAccess.getRefAttributeAccess().getManyManyKeyword_2_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRefAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "many", true, "many");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:564:3: ( (otherlv_4= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:565:1: (otherlv_4= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:565:1: (otherlv_4= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:566:3: otherlv_4= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRefAttributeRule());
            	        }
                    
            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRefAttribute1233); 

            		newLeafNode(otherlv_4, grammarAccess.getRefAttributeAccess().getTypeEntityCrossReference_3_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRefAttribute"


    // $ANTLR start "entryRuleRefByAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:585:1: entryRuleRefByAttribute returns [EObject current=null] : iv_ruleRefByAttribute= ruleRefByAttribute EOF ;
    public final EObject entryRuleRefByAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRefByAttribute = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:586:2: (iv_ruleRefByAttribute= ruleRefByAttribute EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:587:2: iv_ruleRefByAttribute= ruleRefByAttribute EOF
            {
             newCompositeNode(grammarAccess.getRefByAttributeRule()); 
            pushFollow(FOLLOW_ruleRefByAttribute_in_entryRuleRefByAttribute1269);
            iv_ruleRefByAttribute=ruleRefByAttribute();

            state._fsp--;

             current =iv_ruleRefByAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRefByAttribute1279); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRefByAttribute"


    // $ANTLR start "ruleRefByAttribute"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:594:1: ruleRefByAttribute returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_ref_by_1_0= 'ref_by' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )? ( (otherlv_4= RULE_ID ) ) ) ;
    public final EObject ruleRefByAttribute() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token lv_ref_by_1_0=null;
        Token lv_one_2_0=null;
        Token lv_many_3_0=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:597:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_ref_by_1_0= 'ref_by' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )? ( (otherlv_4= RULE_ID ) ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:598:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_ref_by_1_0= 'ref_by' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )? ( (otherlv_4= RULE_ID ) ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:598:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_ref_by_1_0= 'ref_by' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )? ( (otherlv_4= RULE_ID ) ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:598:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_ref_by_1_0= 'ref_by' ) ) ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )? ( (otherlv_4= RULE_ID ) )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:598:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:599:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:599:1: (lv_name_0_0= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:600:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRefByAttribute1321); 

            			newLeafNode(lv_name_0_0, grammarAccess.getRefByAttributeAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRefByAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:616:2: ( (lv_ref_by_1_0= 'ref_by' ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:617:1: (lv_ref_by_1_0= 'ref_by' )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:617:1: (lv_ref_by_1_0= 'ref_by' )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:618:3: lv_ref_by_1_0= 'ref_by'
            {
            lv_ref_by_1_0=(Token)match(input,27,FOLLOW_27_in_ruleRefByAttribute1344); 

                    newLeafNode(lv_ref_by_1_0, grammarAccess.getRefByAttributeAccess().getRef_byRef_byKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRefByAttributeRule());
            	        }
                   		setWithLastConsumed(current, "ref_by", true, "ref_by");
            	    

            }


            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:631:2: ( ( (lv_one_2_0= 'one' ) ) | ( (lv_many_3_0= 'many' ) ) )?
            int alt8=3;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==25) ) {
                alt8=1;
            }
            else if ( (LA8_0==26) ) {
                alt8=2;
            }
            switch (alt8) {
                case 1 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:631:3: ( (lv_one_2_0= 'one' ) )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:631:3: ( (lv_one_2_0= 'one' ) )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:632:1: (lv_one_2_0= 'one' )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:632:1: (lv_one_2_0= 'one' )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:633:3: lv_one_2_0= 'one'
                    {
                    lv_one_2_0=(Token)match(input,25,FOLLOW_25_in_ruleRefByAttribute1376); 

                            newLeafNode(lv_one_2_0, grammarAccess.getRefByAttributeAccess().getOneOneKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRefByAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "one", true, "one");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:647:6: ( (lv_many_3_0= 'many' ) )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:647:6: ( (lv_many_3_0= 'many' ) )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:648:1: (lv_many_3_0= 'many' )
                    {
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:648:1: (lv_many_3_0= 'many' )
                    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:649:3: lv_many_3_0= 'many'
                    {
                    lv_many_3_0=(Token)match(input,26,FOLLOW_26_in_ruleRefByAttribute1413); 

                            newLeafNode(lv_many_3_0, grammarAccess.getRefByAttributeAccess().getManyManyKeyword_2_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRefByAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "many", true, "many");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:662:4: ( (otherlv_4= RULE_ID ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:663:1: (otherlv_4= RULE_ID )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:663:1: (otherlv_4= RULE_ID )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:664:3: otherlv_4= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRefByAttributeRule());
            	        }
                    
            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRefByAttribute1448); 

            		newLeafNode(otherlv_4, grammarAccess.getRefByAttributeAccess().getTypeEntityCrossReference_3_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRefByAttribute"


    // $ANTLR start "entryRuleQualifiedName"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:683:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:684:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:685:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName1485);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName1496); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:692:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:695:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:696:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:696:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:696:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName1536); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:703:1: (kw= '.' this_ID_2= RULE_ID )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==28) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../de.nordakademie.hausarbeit.crudframework/src-gen/de/nordakademie/hausarbeit/crudframework/parser/antlr/internal/InternalDomainDsl.g:704:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,28,FOLLOW_28_in_ruleQualifiedName1555); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName1570); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleApplication_in_entryRuleApplication75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleApplication85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleApplication122 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleApplication139 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleApplication156 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_rulePackageDeclaration_in_ruleApplication177 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_13_in_ruleApplication190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageDeclaration_in_entryRulePackageDeclaration226 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackageDeclaration236 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rulePackageDeclaration273 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackageDeclaration294 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_rulePackageDeclaration306 = new BitSet(new long[]{0x0000000000012000L});
    public static final BitSet FOLLOW_ruleEntity_in_rulePackageDeclaration327 = new BitSet(new long[]{0x0000000000012000L});
    public static final BitSet FOLLOW_13_in_rulePackageDeclaration340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType378 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDataType388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleDataType425 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDataType442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity483 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity493 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleEntity530 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity547 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_17_in_ruleEntity565 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity585 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleEntity599 = new BitSet(new long[]{0x0000000000042010L});
    public static final BitSet FOLLOW_ruleAttribute_in_ruleEntity620 = new BitSet(new long[]{0x0000000000042010L});
    public static final BitSet FOLLOW_13_in_ruleEntity633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute669 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute679 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleAttribute_in_ruleAttribute726 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRefAttribute_in_ruleAttribute753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRefByAttribute_in_ruleAttribute780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleAttribute_in_entryRuleSimpleAttribute815 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleAttribute825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleSimpleAttribute862 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSimpleAttribute879 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleSimpleAttribute896 = new BitSet(new long[]{0x0000000000F00000L});
    public static final BitSet FOLLOW_20_in_ruleSimpleAttribute916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleSimpleAttribute945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleSimpleAttribute974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleSimpleAttribute1003 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRefAttribute_in_entryRuleRefAttribute1055 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRefAttribute1065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRefAttribute1107 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleRefAttribute1130 = new BitSet(new long[]{0x0000000006000000L});
    public static final BitSet FOLLOW_25_in_ruleRefAttribute1162 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_26_in_ruleRefAttribute1199 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRefAttribute1233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRefByAttribute_in_entryRuleRefByAttribute1269 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRefByAttribute1279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRefByAttribute1321 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleRefByAttribute1344 = new BitSet(new long[]{0x0000000006000010L});
    public static final BitSet FOLLOW_25_in_ruleRefByAttribute1376 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_26_in_ruleRefByAttribute1413 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRefByAttribute1448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName1485 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName1496 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName1536 = new BitSet(new long[]{0x0000000010000002L});
    public static final BitSet FOLLOW_28_in_ruleQualifiedName1555 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName1570 = new BitSet(new long[]{0x0000000010000002L});

}